/**
 * 1. 完成一个fiber的标准：没有child 或者 所有的child都已经完成
 */

let nextUnitOfWork = null;
const hasTimeRemaining = () => true;
function workLoop() {
  while (nextUnitOfWork !== null && hasTimeRemaining()) {
    nextUnitOfWork = performUnitOfWork(nextUnitOfWork);
  }
  console.log("render阶段结束");
}

function performUnitOfWork(fiber) {
  let child = beginWork(fiber);
  // 如果执行完了 就会返回第一个子节点
  if (child) {
    return child;
  }
  // 如果没有子节点
  while (fiber) {
    // 可以结束此fiber的渲染
    completeUnitOfWork(fiber);
    // 如果有兄弟 就返回兄弟
    if (fiber.sibling) {
      return fiber.sibling;
    }
    // 如果没有弟弟就让爸爸完成 然后找叔叔
    fiber = fiber.return; //
  }
}

function beginWork(fiber) {
  console.log("beginWork", fiber.props.id);
  return fiber.child;
}
